package pos;

import javax.swing.JLabel;

public class Posicao implements Comparable<Posicao> {

	private final int x;
	private final int y;
	private JLabel label;
	private boolean disponivel;
	private Personagem personagem;

	private double cost;
	private double dist;
	private Posicao father;
	private int tipo;
	
	private boolean selected;

	public Posicao(int x, int y, JLabel label) {
		this.x = x;
		this.y = y;
		this.label = label;
		this.disponivel = true;
		this.personagem = null;

		this.cost = 0;
		this.dist = 0;
		this.father = null;
		this.tipo = 0;
		
		this.selected = false;
	}

	public void setCost(double cost) {
		this.cost = cost;
	}

	public void setDist(double dist2) {
		this.dist = dist2;
	}

	public void setFather(Posicao father) {
		this.father = father;
	}

	public int getTipo() {
		return tipo;
	}
	
	public boolean getSelected() {
		return selected;
	}
	
	public void setSelected(boolean x){
		selected = x;
	}

	public void setOrigem() {
		tipo = 1;
	}

	public void setDestino() {
		tipo = 2;
	}

	public void setObstaculo() {
		tipo = 3;
	}

	public void setTipo(int x) {
		tipo = x;
	}

	public double getDist() {
		return dist;
	}

	public Posicao getFather() {
		return father;
	}

	public JLabel getLabel() {
		return label;
	}

	public int getX() {
		return x;
	}

	public int getY() {
		return y;
	}

	public double getCost() {
		return cost;
	}

	public boolean getDisponivel() {
		return disponivel;
	}

	public void indisponivel() {
		disponivel = false;
	}

	public void disponivel() {
		disponivel = true;
	}

	public Personagem getPersonagem() {
		return personagem;
	}

	public void removePersonagem() {
		this.personagem = null;
		label.setIcon(null);
	}

	public void setPersonagem(Personagem personagem) {
		this.personagem = personagem;
		label.setIcon(personagem.getImagem());
	}

	@Override
	public int compareTo(Posicao p) {
		if (cost < p.cost) {
			return -1;
		}
		if (cost > p.cost) {
			return 1;
		}
		return 0;
	}
}
